home *** CD-ROM | disk | FTP | other *** search
- package Cutscene
- {
- import Common.ResourceManager;
- import Common.SoundManager;
- import flash.display.DisplayObject;
- import flash.display.MovieClip;
- import flash.display.SimpleButton;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.text.TextField;
- import flash.utils.clearTimeout;
- import flash.utils.setTimeout;
-
- public class CutsceneManager
- {
-
- public static const C_DIALOGUE_SPEED:* = 1;
-
- private static var instance:CutsceneManager;
-
-
- private var curTxtDelta:uint = 0;
-
- private var scene:MovieClip = null;
-
- private var curCutsceneName:String = "";
-
- private var txtName:TextField = null;
-
- private var curTxtDisplayCount:uint = 0;
-
- private var cutsceneScripts:Array;
-
- private var resources:ResourceManager;
-
- private var currentTimeout:uint = 0;
-
- private var cutsceneDecisions:Array;
-
- private var cutsceneResolves:Array;
-
- private var cutsceneFileName:String = "";
-
- private var dialogueBox:MovieClip = null;
-
- private var cutsceneResolvePlugin:ICutsceneResolvePlugin;
-
- private var sceneParent:MovieClip = null;
-
- private var txtDialogue:TextField = null;
-
- private var loadToSceneAfterLoading:Boolean = true;
-
- private var curCutscene:CutsceneState = null;
-
- public function CutsceneManager()
- {
- cutsceneFileName = "";
- resources = new ResourceManager();
- cutsceneScripts = [];
- cutsceneResolves = [];
- cutsceneDecisions = [];
- curCutscene = null;
- curCutsceneName = "";
- txtName = null;
- txtDialogue = null;
- dialogueBox = null;
- scene = null;
- sceneParent = null;
- curTxtDisplayCount = 0;
- curTxtDelta = 0;
- currentTimeout = 0;
- loadToSceneAfterLoading = true;
- super();
- }
-
- public static function getInstance() : CutsceneManager
- {
- if(instance == null)
- {
- instance = new CutsceneManager();
- }
- return instance;
- }
-
- public function get CurrentCutscene() : CutsceneState
- {
- return curCutscene;
- }
-
- public function loadCutsceneFromName(param1:String) : *
- {
- curCutsceneName = param1;
- loadBackground();
- loadCutscene();
- }
-
- public function setSceneParent(param1:MovieClip) : *
- {
- this.sceneParent = param1;
- }
-
- public function set LoadToSceneAfterLoading(param1:Boolean) : *
- {
- this.loadToSceneAfterLoading = param1;
- }
-
- public function loadCutscene() : *
- {
- if(curCutscene != cutsceneScripts[curCutsceneName])
- {
- curCutscene = cutsceneScripts[curCutsceneName];
- if(curCutscene.loadCutscene(scene,resources) == 2)
- {
- nextPage();
- }
- dialogueBox.visible = !curCutscene.IsDialogueBoxInvisible;
- curTxtDisplayCount = 0;
- }
- }
-
- public function nextPage() : *
- {
- var _loc1_:CutsceneResolve = null;
- var _loc2_:Boolean = false;
- _loc1_ = null;
- _loc2_ = true;
- clearTimeout(currentTimeout);
- if(curCutscene == null)
- {
- return;
- }
- while(_loc2_)
- {
- switch(curCutscene.nextPage())
- {
- case -1:
- _loc2_ = false;
- return;
- case 0:
- if(cutsceneResolvePlugin != null)
- {
- _loc1_ = cutsceneResolves[curCutscene.DefaultResolve];
- cutsceneResolvePlugin.checkResolve(_loc1_.ResolveType,_loc1_.ResolveName,this.sceneParent);
- }
- _loc2_ = false;
- break;
- case 1:
- _loc2_ = false;
- break;
- case 2:
- break;
- }
- }
- curTxtDisplayCount = 0;
- }
-
- public function unloadCutscene(param1:Boolean) : *
- {
- if(curCutscene != null)
- {
- curCutscene.unloadCutscene(param1);
- curCutscene = null;
- }
- }
-
- public function setCutsceneDisplayElements(param1:TextField, param2:TextField, param3:MovieClip, param4:TextField, param5:SimpleButton, param6:MovieClip, param7:MovieClip) : *
- {
- this.txtName = param1;
- this.txtDialogue = param2;
- this.dialogueBox = param6;
- this.scene = param7;
- CutsceneDialogue.txtDialogue = param2;
- CutsceneDialogue.txtOwner = param1;
- CutsceneDialogue.txtOwnerbg_mc = param3;
- CutsceneDialogue.dialogueBox = param6;
- CutsceneDialogue.txtSkip = param4;
- CutsceneDialogue.txtSkipButton_mc = param5;
- }
-
- public function loadBackground() : *
- {
- cutsceneScripts[curCutsceneName].loadBG(scene);
- }
-
- public function getResolve(param1:String) : *
- {
- return cutsceneResolves[param1];
- }
-
- public function queueLoadCutscene(param1:XML) : *
- {
- var resolveNode:XML = null;
- var stateNode:XML = null;
- var resolve:CutsceneResolve = null;
- var cutscene:CutsceneState = null;
- var xmlParent:XML = param1;
- try
- {
- cutsceneFileName = xmlParent.@name.toString();
- curCutsceneName = xmlParent.@initCutscene.toString();
- resources.Root = xmlParent.Res.@root;
- resources.loadResource();
- for each(resolveNode in xmlParent.Resolves.elements())
- {
- resolve = CutsceneResolve.fromXML(resolveNode,scene);
- cutsceneResolves[resolve.Name] = resolve;
- }
- for each(stateNode in xmlParent.States.elements())
- {
- cutscene = CutsceneState.fromXML(stateNode,scene);
- cutsceneScripts[cutscene.Name] = cutscene;
- }
- if(loadToSceneAfterLoading)
- {
- resources.CallbackFunction = loadCutscene;
- }
- }
- catch(e:TypeError)
- {
- trace("Could not parse text into XML");
- trace(e.message);
- }
- }
-
- public function addPersonOverride(param1:String, param2:String, param3:DisplayObject) : *
- {
- curCutscene.addPersonOverride(param1,param2,param3);
- }
-
- public function onPressSkip(param1:MouseEvent) : *
- {
- if(curCutscene == null || curCutscene.CurrentDialogue == null)
- {
- return;
- }
- if(curTxtDisplayCount < curCutscene.CurrentDialogue.LengthOfText)
- {
- curTxtDisplayCount = curCutscene.CurrentDialogue.LengthOfText;
- curCutscene.CurrentDialogue.updateTextElement(curTxtDisplayCount);
- if(txtDialogue.text == "...")
- {
- currentTimeout = setTimeout(nextPage,10000);
- }
- else if(curTxtDisplayCount < 20)
- {
- currentTimeout = setTimeout(nextPage,curTxtDisplayCount * 300);
- }
- else if(curTxtDisplayCount < 100)
- {
- currentTimeout = setTimeout(nextPage,curTxtDisplayCount * 100);
- }
- else
- {
- currentTimeout = setTimeout(nextPage,10000);
- }
- }
- else
- {
- nextPage();
- }
- }
-
- public function update() : *
- {
- if(curCutscene == null)
- {
- return;
- }
- if(curTxtDelta == C_DIALOGUE_SPEED)
- {
- ++curTxtDisplayCount;
- curTxtDelta = 0;
- if(curCutscene != null && curCutscene.CurrentDialogue != null)
- {
- curCutscene.CurrentDialogue.updateTextElement(curTxtDisplayCount);
- curCutscene.CurrentDialogue.talk(curCutscene,curTxtDisplayCount);
- }
- }
- if(curTxtDisplayCount == curCutscene.CurrentDialogue.LengthOfText && curTxtDelta == 0)
- {
- if(txtDialogue.text == "...")
- {
- currentTimeout = setTimeout(nextPage,10000);
- }
- else if(curTxtDisplayCount < 20)
- {
- currentTimeout = setTimeout(nextPage,curTxtDisplayCount * 300);
- }
- else if(curTxtDisplayCount < 100)
- {
- currentTimeout = setTimeout(nextPage,curTxtDisplayCount * 100);
- }
- else
- {
- currentTimeout = setTimeout(nextPage,10000);
- }
- }
- ++curTxtDelta;
- }
-
- public function skipScene(param1:MouseEvent) : *
- {
- var _loc2_:CutsceneResolve = null;
- _loc2_ = null;
- if(cutsceneResolvePlugin != null)
- {
- _loc2_ = cutsceneResolves[curCutscene.DefaultResolve];
- cutsceneResolvePlugin.checkResolve(_loc2_.ResolveType,_loc2_.ResolveName,this.sceneParent);
- }
- curTxtDisplayCount = 0;
- }
-
- public function doneLoading() : *
- {
- return resources.DoneLoading;
- }
-
- public function set CutsceneResolvePlugin(param1:ICutsceneResolvePlugin) : *
- {
- this.cutsceneResolvePlugin = param1;
- }
-
- public function resolve(param1:uint, param2:String) : *
- {
- var _loc3_:MovieClip = null;
- _loc3_ = this.sceneParent as MovieClip;
- if(cutsceneResolvePlugin != null)
- {
- cutsceneResolvePlugin.checkResolve(param1,param2,_loc3_);
- return;
- }
- switch(param1)
- {
- case 0:
- unloadCutscene(false);
- curCutsceneName = param2;
- loadBackground();
- loadCutscene();
- break;
- case 1:
- unloadCutscene(true);
- SoundManager.getInstance().stopBG();
- _loc3_.gotoAndStop(param2);
- _loc3_.removeEventListener(Event.ENTER_FRAME,_loc3_.onCutsceneEnterFrame);
- }
- }
- }
- }
-